/**
 * 产品接口
 */
var express = require('express');
var router = express.Router();

var sql = require('../db/index');
const { describe } = require('node:test');

/**
 * @swagger
 *       /product/saveOrUpdate:
 *       post:
 *           description: 产品新增或者修改接口
 *           tags: [产品]
 *           produces:
 *               - application/x-www-form-urlencoded
 *           parameters:
 *               - name: id
 *                 description: 产品id
 *                 required: true
 *                 type: number
 *               - name: name,
 *                 description: 产品名称
 *                 required: true
 *                 type: string
 *               - name: description,
 *                 description: 产品描述
 *                 required: false
 *                 type: string
 *               - name: price,
 *                 description: 产品价格
 *                 required: true
 *                 type: string
 *               - name: photo,
 *                 description: 产品封面
 *                 required: false
 *                 type: string
 *               - name: product_category_id,
 *                 description: 产品栏目
 *                 required: false
 *                 type: number
 *           responses:
 *               200:
 *                   description: 操作成功
 *               500:
 *                   description: 服务器错误
 */

//新增或者修改接口
router.post('/saveOrUpdate',async(req,res)=>{
    //获取前端传递的参数
    const{id,name,description,price,photo,product_category_id}=req.body;
    //如果id存在，做修改，否则就是新增
    let mysql='';
    if(id){
        mysql = `update jz_product set name =' ${name}',description = '${description}',price ='${price}',
        photo = '${photo}',product_category_id=${product_category_id} where id=${id}`
    }else{
        mysql = `insert into jz_product (id,name,description,status,price,photo,product_category_id)
        values(null,'${name}','${description}','正常','${price}','${photo}',${product_category_id})`
    }
    await sql.query(mysql);
    //给前端做出响应
    res.send({
        status:200,
        message:"操作成功",
        data:null,
        timestamp:new Date().getTime()
    })
})

// 上架和下架接口

/**
 * @swagger
 *       /product/changeStatus:
 *       post:
 *           description: 上架或下架产品
 *           tags: [产品]
 *           produces:
 *               - application/x-www-form-urlencoded
 *           parameters:
 *               - name: id
 *                 description: 产品id
 *                 required: true
 *                 type: number
 *               - name: status,
 *                 description: 状态
 *                 required: true
 *                 type: string
 *           responses:
 *               200:
 *                   description: 操作成功
 *               500:
 *                   description: 服务器错误
 */
router.post('/changeStatus',async(req,res)=>{
    //获取参数
    let{id,status}=req.body;
    if(status === '下架'){
        status = '下架'
    }else{
        status = '正常'
    }
    await sql.query(`update jz_product set status = '${status}' where id = ${id}`);
    //给前端做出响应
    res.send({
        status:200,
        message:status=='下架'?'下架成功':'上架成功',
        // if(status==='下架'){
        //   console.log('下架成功');
        // }else{
        //   console.log('上架成功');
        // }
        data:null,
        timestamp:new Date().getTime()
      })
    
})


//分页模糊查询
router.get('/pageQuery', async function (req, res) {
    let { page, pageSize, name, status, product_category_id } = req.query;
    page = +page;
    pageSize = +pageSize;
    product_category_id = +product_category_id;
    let result, result1;
    let offset = (page - 1) * pageSize;
    if (name && status && product_category_id) {
      let mysql = `select * from jz_product where name like '${'%' + name + '%'}' and status = '${status}' and product_category_id = ${product_category_id} limit ${pageSize} offset ${offset}`;
      result = await sql.query(mysql);
      let mysql1 = `select count(*) total from jz_product where name like '${'%' + name + '%'}' and status = '${status}' and product_category_id = ${product_category_id} limit ${pageSize} offset ${offset}`;
      result1 = await sql.query(mysql1);
    } else if (name && status) {
      let mysql = `select * from jz_product where name like '${'%' + name + '%'}' and status = '${status}' limit ${pageSize} offset ${offset}`;
      result = await sql.query(mysql);
      let mysql1 = `select count(*) total from jz_product where name like '${'%' + name + '%'}' and status = '${status}' limit ${pageSize} offset ${offset}`;
      result1 = await sql.query(mysql1);
    } else if (name && product_category_id) {
      let mysql = `select * from jz_product where name like '${'%' + name + '%'}' and product_category_id = ${product_category_id} limit ${pageSize} offset ${offset}`;
      result = await sql.query(mysql);
      let mysql1 = `select count(*) total from jz_product where name like '${'%' + name + '%'}' and product_category_id = ${product_category_id} limit ${pageSize} offset ${offset}`;
      result1 = await sql.query(mysql1);
    } else if (status && product_category_id) {
      let mysql = `select * from jz_product where status = '${status}' and product_category_id = ${product_category_id} limit ${pageSize} offset ${offset}`;
      result = await sql.query(mysql);
      let mysql1 = `select count(*) total from jz_product where status = '${status}'  and product_category_id = ${product_category_id} limit ${pageSize} offset ${offset}`;
      result1 = await sql.query(mysql1);
    } else if (name || status || product_category_id) {
      if (name) {
        let mysql = `select * from jz_product where name like '${'%' + name + '%'}' limit ${pageSize} offset ${offset}`;
        result = await sql.query(mysql);
        let mysql1 = `select count(*) total from jz_product where name like '${'%' + name + '%'}' limit ${pageSize} offset ${offset}`;
        result1 = await sql.query(mysql1);
      } else if (status) {
        let mysql = `select * from jz_product where status ='${status}' limit ${pageSize} offset ${offset}`;
        result = await sql.query(mysql);
        let mysql1 = `select count(*) total from jz_product where status = '${status}' limit ${pageSize} offset ${offset}`;
        result1 = await sql.query(mysql1);
      } else {
        let mysql = `select * from jz_product where product_category_id = ${product_category_id} limit ${pageSize} offset ${offset}`;
        result = await sql.query(mysql);
        let mysql1 = `select count(*) total from jz_product where product_category_id = ${product_category_id} limit ${pageSize} offset ${offset}`;
        result1 = await sql.query(mysql1);
      }
    } else {
      let mysql = `select * from jz_product  limit ${pageSize} offset ${offset}`;
      result = await sql.query(mysql);
      let mysql1 = `select count(*) total from jz_product  limit ${pageSize} offset ${offset}`;
      result1 = await sql.query(mysql1);
    }
    result = result.filter(item => {
      return item.length > 0;
    })
    console.log(result[0], '2222');
    total = result1[0][0].total;
    res.send({
      status: 200,
      message: '查询成功',
      data: result[0],
      total,
      timestamp: new Date().getTime()
    })
  })
  

/**
 * @swagger
 *    /product/pageQuery:
 *    get:
 *        description: 分页多条件查询产品列表
 *        tags: [产品]
 *        parameters:
 *            - in: query
 *              name: page
 *              description: 页码
 *              required: true
 *              schema:
 *                type: number
 *            - in: query    
 *              name: pageSize
 *              description: 每页显示数量
 *              required: true
 *              schema:
 *                type: number
 *            - in: query    
 *              name: name
 *              description: 产品名称
 *              required: false
 *              schema:
 *                type: string
 *            - in: query    
 *              name: status
 *              description: 产品状态
 *              required: false
 *              schema:
 *                type: string
 *            - in: query    
 *              name: product_category_id
 *              description: 产品所属栏目
 *              required: false
 *              schema:
 *                type: number
 *        responses:
 *          '200':
 *            description: 返回产品列表
 */


//删除接口
module.exports = router;